import dayjs from 'dayjs';

class DateTime {
  constructor() {
    this.current = dayjs();
  }

  // 返回当前时间
  getCurrentTime() {
    return this.current;
  }
  // 将传入的时间戳格式化为指定的字符串格式，默认为YYYY-MM-DD HH:mm:ss
  formatTimestamp(timestamp, format = 'YYYY-MM-DD HH:mm:ss') {
    return dayjs(timestamp).format(format);
  }
  // 将传入的日期对象格式化为指定的字符串格式，默认为YYYY-MM-DD
  formatDate(date, format = 'YYYY-MM-DD') {
    return dayjs(date).format(format);
  }
  // 将传入的时间对象格式化为指定的字符串格式，默认为HH:mm:ss
  formatTime(time, format = 'HH:mm:ss') {
    return dayjs(time).format(format);
  }

  // 将传入的日期对象格式化为YYYY-MM-DD HH:mm:ss字符串格式
  formatDateTime(date, format = 'YYYY-MM-DD HH:mm:ss') {
    return dayjs(date).format(format);
  }

  // 将指定的日期对象增加指定的天数
  addDays(date, days) {
    return dayjs(date).add(days, 'day');
  }
  // 将指定的日期对象减去指定的天数
  subtractDays(date, days) {
    return dayjs(date).subtract(days, 'day');
  }
  // 检查date1是否在date2之前
  isBefore(date1, date2) {
    return dayjs(date1).isBefore(date2);
  }
  // 检查date1是否在date2之后
  isAfter(date1, date2) {
    return dayjs(date1).isAfter(date2);
  }
}

const timePlugins = {
  install(Vue) {
    Vue.prototype.$dayjs = new DateTime();
  }
};

/**
 * 使用示例
 */
// const dt = new DateTime();

// console.log(dt.getCurrentTime()); // 获取当前时间

// console.log(dt.formatTimestamp(1625123456789)); // 格式化时间戳

// console.log(dt.formatDate(new Date())); // 格式化日期对象

// console.log(dt.formatTime(new Date())); // 格式化时间对象

// console.log(dt.formatDateTime(new Date())); // 格式化日期对象为'YYYY-MM-DD HH:mm:ss'字符串格式

// console.log(dt.addDays(new Date(), 7)); // 增加7天

// console.log(dt.subtractDays(new Date(), 3)); // 减去3天

// console.log(dt.isBefore('2021-07-01', '2021-07-15')); // 检查日期是否在指定日期之前

// console.log(dt.isAfter('2021-07-01', '2021-07-15')); // 检查日期是否在指定日期之后

export default timePlugins;
